package ACwing.P1BasicAlgorithm;

import java.util.*;

/**
 * @Date : 2023-03-02
 * @Description:离散化，802.区间和
 */
public class Discretization {
    static int N=300010;
    static int []a=new int[N],s=new int [N];//把所有用到的点离散化到a数组  s计算离散化之后，前缀和的数组，用于计算区间的总和
   static List<Integer> alls = new ArrayList<>();  //alls所有用到的数字
   static List<P> adds=new ArrayList<>(),querys=new ArrayList<>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //a存后的数，s存前缀和的数，n操作次数(x加上c)，m查询次数(l,r）区间和
        int n = sc.nextInt();
        int m = sc.nextInt();
        //读入操作
        for (int i = 0; i < n; i++) {
            int x,c;
            x= sc.nextInt();   c= sc.nextInt();
            adds.add(new P(x,c));
            alls.add(x);
        }
        //读入区间
        for (int i = 0; i < m; i++) {
            int l,r;
            l= sc.nextInt();   r= sc.nextInt();
            querys.add(new P(l,r));
            alls.add(l);
            alls.add(r);
        }
        sc.close();
        //排序去重  set不保序
       // alls.sort((o1, o2) -> o1-o2);
        alls=new ArrayList<>(new HashSet<>(alls));
        //System.out.println(alls);
        Collections.sort(alls);
      //  System.out.println(alls);

       /*   另一种去重  这种不用先排序再去重
       *    int unique = unique(allS);
            allS = allS.subList(0, unique);
       * */
        //处理插入
        for(P item:adds){
            int x=find(item.x);
            a[x]+=item.y;
        }

        //预处理前缀和
        for (int i = 1; i <=alls.size(); i++) s[i]=s[i-1]+a[i];

        //处理询问
        for(P item:querys){
            int l=find(item.x),r=find(item.y);
            System.out.println((s[r] - s[l-1]));
        }
    }
    //二分查找第x个数
    public static int find(int x){
        int l=0,r=alls.size()-1;
        while(l<r){
            int mid=l+r>>1;
            if(alls.get(mid)>=x) r=mid;
            else l=mid+1;
        }
        return r+1;//从1开始计算
    }
    //返回不重复的最后一个下标
    public static int unique(List<Integer> list) {
        int j = 0;
        for (int i = 0; i < list.size(); i++) {
            if (i == 0 || list.get(i) != list.get(i - 1)) {
                list.set(j++, list.get(i));
            }
        }
        return j;
    }
}
class P implements Comparable<P>{
    int x,y;
    public P(int x,int y){
        this.x=x;
        this.y=y;
    }
    @Override
    public int compareTo(P o) {
        return Integer.compare(x,o.x);
    }
}
